#pragma once
#include "Headers.h"

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace WeifenLuo::WinFormsUI::Docking;

namespace OgreUnified {

	public ref class ProjectResourcesForm : public WeifenLuo::WinFormsUI::Docking::DockContent
	{
	public:
		ProjectResourcesForm(void);
		static property ProjectResourcesForm ^Instance;

	protected:
		~ProjectResourcesForm();
	
	private: 	
		System::Windows::Forms::ToolStrip^  m_ToolStrip;
		System::Windows::Forms::TreeView^	m_TreeView;
		System::IO::FileSystemWatcher^		m_FileSystemWatcher;

		System::ComponentModel::Container ^	components;
	
		void InitializeComponent(void);

	private:
		void PopulateTree(System::String^ dir, TreeNodeCollection^ node);

		//drag drop op
		System::Void m_TreeView_DragDrop(System::Object^  sender, System::Windows::Forms::DragEventArgs^  e);
		System::Void m_TreeView_DragEnter(System::Object^  sender, System::Windows::Forms::DragEventArgs^  e);
		System::Void m_TreeView_DragLeave(System::Object^  sender, System::EventArgs^  e);
		System::Void m_TreeView_DragOver(System::Object^  sender, System::Windows::Forms::DragEventArgs^  e);
		System::Void m_TreeView_GiveFeedback(System::Object^  sender, System::Windows::Forms::GiveFeedbackEventArgs^  e);
		System::Void m_TreeView_QueryContinueDrag(System::Object^  sender, System::Windows::Forms::QueryContinueDragEventArgs^  e);
		//
		System::Void m_TreeView_AfterLabelEdit(System::Object^  sender, System::Windows::Forms::NodeLabelEditEventArgs^  e);
		System::Void m_TreeView_AfterSelect(System::Object^  sender, System::Windows::Forms::TreeViewEventArgs^  e);
		//
		System::Void m_TreeView_ItemDrag(System::Object^  sender, System::Windows::Forms::ItemDragEventArgs^  e);
		System::Void m_TreeView_NodeMouseClick(System::Object^  sender, System::Windows::Forms::TreeNodeMouseClickEventArgs^  e);
		System::Void m_TreeView_NodeMouseDoubleClick(System::Object^  sender, System::Windows::Forms::TreeNodeMouseClickEventArgs^  e);
		
		//
		System::Void m_TreeView_MouseDown(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e);
		System::Void m_TreeView_MouseEnter(System::Object^  sender, System::EventArgs^  e);
		System::Void m_TreeView_MouseLeave(System::Object^  sender, System::EventArgs^  e);
		System::Void m_TreeView_MouseMove(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e);
		System::Void m_TreeView_MouseUp(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e);

		System::Void m_FileSystemWatcher_Changed(System::Object^  sender, System::IO::FileSystemEventArgs^  e);
		System::Void m_FileSystemWatcher_Created(System::Object^  sender, System::IO::FileSystemEventArgs^  e);
		System::Void m_FileSystemWatcher_Deleted(System::Object^  sender, System::IO::FileSystemEventArgs^  e);
		System::Void m_FileSystemWatcher_Renamed(System::Object^  sender, System::IO::RenamedEventArgs^  e);
	};
}
